#-*- coding: utf8 -*-

from tutor.script import *
from tutor.plugin.maple import *

# meta information
meta(author       = 'Fábio Mendes',
     creationdate = datetime(2010, 10, 9),
     status       = 'testing',
     difficulty   = 'easy',
     time         = 10,
     itemtype     = 'test')

# regiao
params = [
    M('1, 2, 3'),
]
a, b, c = oneof(*params)
a, b, c = map(M, [randint(1, 5), randint(1, 5), randint(1, 5)])
d = b + c
print('a=%s, b=%s, c=%s, d=%s' % (a,b,c,d))

# equacoes
eq_xy = a*y + b*x == a*b
eq_yz = z == c + y
s = M.solve

# resposta
def resp(order='xyz', x=a, y=b, z=d, x_=0, y_=0, z_=0):
    map_ = lambda x, y: tuple(map(x, y))
    intx = r'\int_{%s}^{%s}dx' % map_(to_latex, (x_, x))
    inty = r'\int_{%s}^{%s}dy' % map_(to_latex, (y_, y))
    intz = r'\int_{%s}^{%s}dz' % map_(to_latex, (z_, z))
    dic = { 'x': intx, 'y': inty, 'z': intz }
    ints = [dic[var] for var in map(str, order) ]
    return ' '.join(ints) + '\\, f(x,y,z)'

# Testa bons pontos
#N = 36
#for ai in range(1, N):
#    for bi in range(1, N):
#            ci = 9
#            bi = bi + ai
#            a, b, c = map(lambda x: M(str(x))/6, (ai,bi,ci))
#            R = resp(a=a, b=b, c=c, d=c+a)
#            if len(str(M.numer(R))) < 4 and len(str(M.denom(R))) < 4: 
#                print (a,b,c), R

question(r'''Seja a integral \[
#1.\]
Marque a opção que consiste na mudança correta dos limites de integração.
''', resp('xyz', x=a, y=s(eq_xy, y), z=s(eq_yz, z)))
multiplechoice()

# choice:
choice_eq(1, resp('yxz', y=b, x=s(eq_xy, x), z=s(eq_yz, z)))
explanation('Escolha correta!') 

# choice:
choice_eq(0, resp('yxz', y=b, x=a, z=s(eq_yz, z)))
explanation('Domínio quadrado no plano $xy$') 

# choice:
choice_eq(0, resp('yxz', y=b, x=s(eq_xy, x), z=s(eq_xy, y)))
explanation('Confundiu as equações de $x,y$ e $x,z$') 

# choice:
choice_eq(0, resp('yxz', y=b, x=a, z=d))
explanation('Corresponde ao cubo superinscrito sobre a figura.') 

question('Marque a opção que consiste na mudança correta dos limites de integração.')
multiplechoice()


# choice:
choice_eq(1, resp('yzx', y=b, z=s(eq_yz, z), x=s(eq_xy, x)) )
explanation('Escolha correta!') 

# choice:
choice_eq(0, resp('yzx', y=b, z=d, x=s(eq_xy, x)) )
explanation('Domínio quadrado no plano $yz$') 

# choice:
choice_eq(0, resp('yzx', y=b, z=c, x=s(eq_xy, x)))
explanation('Considerou a região de integração como uma cunha reta no plano $yz$.') 

# choice:
choice_eq(0, resp('yzx', y=b, z=c, x=s(eq_yz, z)))
explanation('Considerou a região de integração como uma cunha reta no plano $yz$.') 

# choice:
choice_eq(0, resp('yzx', y=b, x=a, z=d))
explanation('Corresponde ao cubo superinscrito sobre a figura.')

end()